
import logging
import os
from logging import handlers

"""
>日志异常,解决思路:
    1.查看handles是否出现重复
    2.如果重复去掉多余的
>实例化TimedRotatingFileHandler
        interval是时间间隔，backupCount是备份文件的个数，如果超过这个个数，就会自动删除，when是间隔的时间单位，单位有以下几种：
        S 秒
        M 分
        H 小时、
        D 天、
        W 每星期（interval==0时代表星期一）
        midnight 每天凌晨
"""


def logger(filename='start'):
    """
    :param filename: 文件名
    :return:logger
    """
    logger = logging.getLogger('A-tao')
    logger.setLevel(logging.DEBUG)   # 设置logger的level为debug
    console = logging.StreamHandler()    # StreamHandler()控制台输出
    current_path = os.path.abspath(os.path.dirname(os.getcwd()))  # 获取当前路径
    is_exists = os.path.exists(r'{}\log'.format(current_path))  # 判断当前路径父级有没有log文件夹
    if not is_exists:
        os.makedirs(r'{}\log'.format(current_path))
    file = logging.FileHandler('{}\log\{}.log'.format(current_path, filename), encoding="utf-8")  # 文件输出
    formatter = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s') # 日志输出方式
    # 将输出方式方式加载到handle
    console.setFormatter(formatter)
    file.setFormatter(formatter)
    # 将处理器添加到logger,让句柄唯一,如果不唯一的话,就会出现重复值
    if len(logger.handlers) == 0:
        logger.addHandler(console)
        logger.addHandler(file)
    logger.removeHandler(logger.handlers)
    return logger


if __name__ == '__main__':
    logger = logger()
    logger.info('test')
